# iTerm2 with Semantic History
### Extremely alpha, but works well.

## Watch the [thirty second screencast](http://vimeo.com/21872771)

Ever wanted to be able to click on paths to open things in a shell?
Well, now you can! Just hold Command and click on the path in the shell.
It'll even open it to the right line if it looks like filename.ext:line_number.

You can also use Command + drag and it will turn it into a draggable
file handle, which you can drop in any OSX app. Pretty rad, no?

## Instructions
[Download](https://github.com/chendo/iTerm2/archives/master) (or build your own,
if you're paranoid or you want the newest features).

Works with MacVim, Textmate and BBedit (it searches for editor in that
order)

If you want it to work even when changing between directories, your
shell must set a window title every time your prompt shows up. I'm using
this as a hook cause it seemed the most appropriate. If you
have oh-my-zsh, then it works out of the box.

Other zsh users, see [termsupport.zsh](https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/termsupport.zsh).

Other shell users, see [here](http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#toc4).

## Operation
* Command + Click opens the file if it is text in
  MacVim/Textmate/BBedit, otherwise opens with associated program.
* Command + Drag gives you a file handle you can drop on any app that
  supports drag and drop (pretty much everything).
* Command + Shift + Click on a directory does `cd <path>; ls`

## Customisation
If you don't use MacVim, Textmate or BBedit or if you want write
specific parsers, you can have the path sent to an external script of
your choice.

`defaults write com.googlecode.iterm2 SemanticHistoryHandler <path to script>`

The script must be marked executable (`chmod +x <file>`) and it will
receive the full path and the line number (if any) as arguments.

## Cavets
* No configuration options (for now).
* Working directory history doesn't work out of the box.

## TODO
* Make paths work even after the directory has been changed.
* Configuration options
* More modifier keys: e.g.,
  * Shift + Command + Click on a foo_spec.rb:88 does `spec foo_spec.rb -l 88`
* Native support for other editors (TextWrangler, JEdit, Emacs, Rubymine)
* Quicklook support

## Changelog

### beta 1:
* Now works with paths with spaces!
* Diff path support (a/path/to/file, b/path/to/file) by @jasoncodes
* Cmd+Drag only checks once rather than constantly scanning for files to pick up

### alpha 3:
* Basic functionality still works if shell isn't setting window title

### alpha 2:
* Now works when the working directory is not valid for old paths in the
  buffer
* Command + Drag lets you drag file/directory handles into any OSX app
* Command + Shift + Click does `d <path>; ls`
* External script support
* Built with llvm/clang for slight performance increase
* Scrolling with wheel always move at least one line.
* Native BBedit support

### alpha 1:
* Command + Click to open implemented for Textmate and MacVim

Jack Chen (@chendo)

